package com.zhuhjay.service.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhuhjay.service.system.model.entity.SystemMenu;
import com.zhuhjay.service.system.model.dto.MenuDto;
import com.zhuhjay.service.system.model.vo.MenuInfoVo;
import com.zhuhjay.service.system.model.vo.PermissionVo;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author Zhuhjay
 * @since 2023-02-13
 */
public interface SystemMenuService extends IService<SystemMenu> {

    /**
     * 根据用户id获取权限列表
     *
     * @param id 用户id
     * @return 权限列表
     */
    List<String> getPermissionsByUserId(Integer id);

    /**
     * 根据角色id获取权限列表
     *
     * @param id 角色id
     * @return 权限列表
     */
    List<String> getPermissionsByRoleId(Integer id);

    /**
     * 根据用户id和权限标识判断是否有权限
     *
     * @param id         用户id
     * @param permission 权限标识
     * @return 是否有权限
     */
    boolean checkPermission(Integer id, String permission);

    /**
     * 获取菜单列表
     *
     * @return 菜单列表
     */
    List<MenuInfoVo> getMenusTreeList();

    /**
     * 根据用户id获取菜单列表
     *
     * @param id 用户id
     * @return 菜单列表
     */
    List<PermissionVo> getPermissionsVoByUserId(Integer id);

    /**
     * 添加菜单信息
     *
     * @param dto 菜单信息
     */
    void add(MenuDto dto);

    /**
     * 更新菜单信息
     *
     * @param id  菜单id
     * @param dto 菜单信息
     */
    void update(Integer id, MenuDto dto);

    /**
     * 删除菜单信息
     *
     * @param id 菜单id
     */
    void delete(Integer id);

}
